ম্যাপ এবং এর ব্যবহার

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) |
213
213

ম্যাপ (Map) হলো C++ STL-এর একটি কন্টেইনার, যা কী-ভ্যালু (key-value) পেয়ার আকারে ডেটা সংরক্ষণ করে। প্রতিটি key এর জন্য একটি নির্দিষ্ট value থাকে, যা ম্যাপের মধ্যে সংরক্ষণ করা হয়। ম্যাপে প্রতিটি key ইউনিক হতে হয়, তবে value একাধিক key এর জন্য একই হতে পারে। C++ এ map সাধারণত map এবং unordered_map এই দুটি রকমের হতে পারে।

  • map: এই কন্টেইনারে key গুলো স্বয়ংক্রিয়ভাবে সাজানো অবস্থায় থাকে।
  • unordered_map: এখানে key গুলো সাজানো অবস্থায় থাকে না, বরং hashing ব্যবহার করে সংরক্ষণ করা হয়।

map এর বৈশিষ্ট্য

  1. ইউনিক কী: map কন্টেইনারে প্রতিটি key ইউনিক হতে হয়।
  2. সাজানো পদ্ধতি: map কন্টেইনারে key গুলো স্বয়ংক্রিয়ভাবে সাজানো থাকে।
  3. অ্যাসোসিয়েটিভ অ্যাক্সেস: key এর মাধ্যমে সরাসরি value অ্যাক্সেস করা যায়।
  4. অর্ডার ওনটাইম: map Red-Black tree ডেটা স্ট্রাকচার ব্যবহার করে, যা O(log n) কমপ্লেক্সিটিতে অ্যাক্সেস দেয়।
  5. নির্দিষ্ট কি না থাকলে মান: নির্দিষ্ট key না থাকলে, ডিফল্ট value তৈরি করা হয়।

map ঘোষণা এবং ব্যবহার

map ঘোষণা করার সময় key এবং value এর ডেটা টাইপ উল্লেখ করতে হয়। map সাধারণত #include <map> লাইব্রেরি থেকে ইমপোর্ট করে ব্যবহার করা হয়।

#include <iostream>
#include <map>
using namespace std;

int main() {
    // map ঘোষণা করা
    map<string, int> age;

    // মান অ্যাসাইন করা
    age["Alice"] = 25;
    age["Bob"] = 30;
    age["Charlie"] = 28;

    // মান প্রদর্শন করা
    for (const auto& entry : age) {
        cout << entry.first << " is " << entry.second << " years old." << endl;
    }

    return 0;
}

আউটপুট:

Alice is 25 years old.
Bob is 30 years old.
Charlie is 28 years old.

বর্ণনা:

  • এখানে age নামের একটি map তৈরি করা হয়েছে, যার key হলো string এবং value হলো int
  • age["Alice"] = 25; এর মাধ্যমে Alice নামের ব্যক্তির বয়স 25 সংরক্ষণ করা হয়েছে।
  • for লুপ ব্যবহার করে প্রতিটি key-value পেয়ার প্রিন্ট করা হয়েছে।

map এর সাধারণ মেথড

মেথডকাজ
insert()key-value পেয়ার ইনসার্ট করতে ব্যবহার করা হয়।
erase()নির্দিষ্ট key বা পজিশন থেকে key-value পেয়ার মুছে দেয়।
find()একটি key খুঁজে বের করে এবং ইটারেটর রিটার্ন করে।
size()map এর মোট উপাদানের সংখ্যা রিটার্ন করে।
clear()map এর সমস্ত উপাদান মুছে দেয়।
count()একটি নির্দিষ্ট key ম্যাপে আছে কিনা তা যাচাই করে।
empty()map খালি কিনা তা যাচাই করে।

উদাহরণ: insert, erase, find, এবং count মেথড

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> age;

    // ডেটা ইনসার্ট করা
    age.insert({"Alice", 25});
    age.insert({"Bob", 30});
    age.insert({"Charlie", 28});

    // নির্দিষ্ট key খোঁজা এবং প্রিন্ট করা
    auto it = age.find("Alice");
    if (it != age.end()) {
        cout << "Alice's age: " << it->second << endl;
    }

    // নির্দিষ্ট key মুছে ফেলা
    age.erase("Bob");

    // একটি key আছে কিনা চেক করা
    if (age.count("Bob") == 0) {
        cout << "Bob is not in the map." << endl;
    }

    return 0;
}

আউটপুট:

Alice's age: 25
Bob is not in the map.

বর্ণনা:

  • age.insert({"Alice", 25}); দ্বারা নতুন key-value পেয়ার ইনসার্ট করা হয়েছে।
  • age.find("Alice"); দ্বারা Alice এর তথ্য খুঁজে বের করা হয়েছে।
  • age.erase("Bob"); দিয়ে Bob এর এন্ট্রি মুছে ফেলা হয়েছে।
  • age.count("Bob") দিয়ে চেক করা হয়েছে যে Bob ম্যাপে নেই।

উদাহরণ: unordered_map ব্যবহার

unordered_map একইভাবে কাজ করে তবে key-গুলো সাজানো থাকে না।

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    unordered_map<string, int> age;

    // ডেটা ইনসার্ট করা
    age["Alice"] = 25;
    age["Bob"] = 30;
    age["Charlie"] = 28;

    // unordered_map এ মান প্রিন্ট করা
    for (const auto& entry : age) {
        cout << entry.first << " is " << entry.second << " years old." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে unordered_map ব্যবহৃত হয়েছে, যেখানে key-এর ক্রম ঠিক থাকে না।
  • এটি সাধারণত দ্রুত কাজ করে, কারণ unordered_map hashing ব্যবহার করে।

map এবং unordered_map এর পার্থক্য

বৈশিষ্ট্যmapunordered_map
ডেটা স্টোরেজkey-এর ক্রম অনুযায়ী সংরক্ষণ করেডেটা ক্রমানুসারে থাকে না
অ্যাক্সেস টাইমO(log n)গড়ে O(1), তবে সবচেয়ে খারাপ ক্ষেত্রে O(n)
ডেটা স্ট্রাকচারRed-Black Tree ব্যবহার করেHash Table ব্যবহার করে
ব্যবহারযখন ডেটা ক্রমানুসারে দরকারযখন দ্রুত অ্যাক্সেস প্রয়োজন এবং ক্রম গুরুত্বপূর্ণ নয়

ম্যাপের সুবিধা

  1. ফাস্ট লুকআপ এবং ইনসার্ট: map এবং unordered_map উভয়ই দ্রুত key-value স্টোরেজ এবং রিট্রিভাল সরবরাহ করে।
  2. ইউনিক কী সংরক্ষণ: প্রতিটি key ইউনিক হওয়ার কারণে ডুপ্লিকেট এন্ট্রি থাকে না।
  3. সহজ ডেটা ম্যানেজমেন্ট: key-value পেয়ার ব্যবহার করে ডেটা স্টোরেজে সহজ অ্যাক্সেস এবং ম্যানেজমেন্ট সম্ভব।
  4. ফ্লেক্সিবিলিটি: প্রোগ্রামিং সমস্যায় ম্যাপ ব্যবহার করে সহজে ডেটা সংরক্ষণ, অনুসন্ধান, মুছা ইত্যাদি করা যায়।

সারসংক্ষেপ

  • ম্যাপ হলো একটি অ্যাসোসিয়েটিভ কন্টেইনার, যা key-value পেয়ার আকারে ডেটা সংরক্ষণ করে।
  • C++ এ map এবং unordered_map এই দুটি প্রকার রয়েছে।
  • map ডেটা ক্রমানুসারে সংরক্ষণ করে এবং unordered_map ডেটা ক্রমানুসারে রাখে না।

map এবং unordered_map কন্টেইনারগুলো প্রোগ্রামিংয়ে ডেটা ম্যানেজমেন্ট, দ্রুত অনুসন্ধান এবং বিভিন্ন অ্যালগরিদমে খুবই কার্যকর।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion